package com.esunny.online.service;

import com.esunny.online.domain.dto.ResourceListQuery;
import com.esunny.online.domain.entity.Resource;
import com.esunny.online.domain.entity.User;

import java.util.List;
import java.util.Map;

/**
 * @author ：李先生
 * @date ：Created in 2020/7/18 8:40
 * @description： 提供Resource相关服务
 * @modified By：
 * @version: $
 */
public interface ResourceService {

    /**
     * 查找未被审核的资源
     * @param resourceListQuery 查找条件
     * @return 未审核通过的资源
     */
    List<Resource> selectUncheckResource(ResourceListQuery resourceListQuery);

    /**
     * 查找未被审核的资源数量
     * @param resourceListQuery 查找条件
     * @return 未审核通过的资源数量
     */
    int selectUncheckCount(ResourceListQuery resourceListQuery);

    /**
     * 上传文件
     * @param resource 数据
     * @return  受影响行数
     */
    int addResource(Resource resource, User user);

    /**
     * 根据Id查找resource
     * @param id resourceId
     * @return Resource对象
     */
    Resource getResourceById(int id);

    /**
     * 查询热点资源
     * @param pageSize 查询条数
     * @return 热点资源列表
     */
    List<Resource> queryHotResource(int pageSize);

    /**
     * 分页查询
     * @param resourceListQuery 数据
     * @return 资源列表
     */
    Map<String, Object> queryByLimit(ResourceListQuery resourceListQuery);

    /**
     * 按条件查询获取条件资源总数
     * @param resourceListQuery
     * @return 资源总数
     */
    int queryCount(ResourceListQuery resourceListQuery);

    /**
     *删除数据
     * @param id 数据
     * @return 受影响行数
     */
    int deleteResource(int id);

    /**
     * 更新资源信息
     * @param resource 资源信息
     * @param user 用户信息
     * @return bool
     */
    boolean updateResource(Resource resource, User user);

    /**
     * 通过标签，资源id和查询数目来查找相关资源列表
     * @param query 查询条件
     * @return 相关资源信息
     */
    List<Resource> queryRelatedResource(Map<String, Object> query);
}
